Many computing applications such as computer games, multimedia applications, office applications or the like use controls to allow users to manipulate characters or control other aspects of an application. Typically such controls are input using, for example, controllers, remotes, keyboards, mice, or the like. Unfortunately, such controls can be difficult to learn, thus creating a barrier between a user and such applications. Furthermore, such controls may be different than actual actions for which the controls are used. For example, a game control that causes a game character to swing a baseball bat may be a combination of buttons and may not correspond to an actual motion of swinging the baseball bat, or a control to reposition a view on a screen, such as repositioning the view of a map in a map application, may be a selection of arrow buttons on a keyboard and may not correspond to the actual motion of the files.
A system of commands that are universal to all users inhibits a user's personalized experience with the system and/or application. Often, users with fundamentally different preferences on how to issue commands are forced to use a unified input module for issuing such commands. However, simply allowing the user to adjust the definition of the command to personalize each command for the user may be a laborious task and the user may not remember the changes, especially when there are a large number of possible commands.